Currently, character generation architectures assume an 8 bit standard. That is, characters are designated by an 8 bit "ASCII" code. This inherently limits the number of different characters and fonts which can be designated to display textual information, or cells to display graphics information, on a visual display screen. Current solutions include the use of a static screen font register and multiple pages of memory, each page of memory storing a different font or group of characters. The contents of the font register determine which page of font memory is to provide the data corresponding to the character codes being supplied in common thereto. While such an architecture provides additional or different fonts, the requirement of a font register and additional memory add complexity and cost to the design and places significant restriction on the manner in which the fonts are used. This renders such architecture a satisfactory solution in only some of the possible applications of character generation schemes.
Examples of current character generation schemes based on an 8 bit character code are U.S. Pat. Nos. 3,911,420, 4,203,102, 4,283,724, 4,330,834, 4,384,285, 4,415,890, 4,437,167, 4,446,457, and 4,520,356.
As a matter of background, textual character generation architectures typically are used to display 256 characters and symbols that are pre-defined in a ROM chip called the character generator. These 256 characters consist, for example, of the standard 128 ASCII characters, plus another 128 graphics symbols and foreign language characters.
Each character can be displayed, for example, with the following attributes: underline, reverse video, blank, blink, and high intensity.
A visual display screen is divided into 2000 cells (80 columns by 25 rows). Each cell can contain one of the 256 characters, which is specified by an 8-bit character code and an 8-bit attribute code stored in a text buffer.
Textual character generation has historically been the most popular mode for processing text because of its speed and simplicity. However, there has been a recent trend toward bit-map graphics techniques for processing text, for greater flexibility in defining character fonts, despite the penalty of complexity and slowness.
In bit-map graphics mode, software can manipulate each individual pixel. This capability is both a blessing and a curse. On the one hand, it permits virtually any graphics image--from an electronic schematic to a Cessna 182 instrument panel--to be displayed on the screen.
But on the other hand this versatility has its price in that the graphics programmer must draw each dot, unaided by a character generator. Because of this added complexity, text processing in graphics mode is generally much slower than in text mode.
Consider, for example, how the letter "T" is generated under both modes. In text character generation architectures, it requires, for example, only that 0054H (the ASCII code for "T" and the attribute code for "normal") be stored in the video, or text, buffer. With this code, a capital "T" is drawn on a 9.times.14 matrix of pixels, for example, in the appropriate cell location.
In bit-map graphics mode, each pixel of a 9.times.14 matrix must be individually specified: to display a "T," 126 bits of information are needed, versus the number of bits required to address the character in text character generation mode. The advantage of bit-map graphics mode is that it is not confined to a single text font style, but can display virtually any graphics image.
Programmers working in the graphics mode must also typically initialize a CRT controller, which is addressed through an index and a data register. These parameters govern such factors as the total number of characters per row, the number of visible rows, and how the screen is scanned.